package org.zero.model;

import java.util.Date;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

/**
 * Component
 * 作用：普通类创建bean并存入容器
 * 属性：
 * value：指定bean的id，不写时，默认是当前类名并把首字母改小写
 * <p>
 * Scope：作用域设置，同xml文件的bean中scope属性
 *
 * @author Zero
 */
@Data
@Component
@Scope("prototype")
public class UserDO {
    /**
     * Value：注入基本类型和String类型
     */
    @Value("${id}")
    private Integer id;
    @Value("${name}")
    private String name;

    /**
     * Autowired
     * 作用：bean 注入
     * 当 spring 容器中有且只有一个bean和要注入的变量类型匹配，此时自动按照类型注入
     * 当存在多个bean与要注入的变量类型匹配时，会使用变量名去匹配bean id注入
     * 如果id也不匹配，可使用Qualifier注解指定bean，当然也可以使用@Primary注解在bean组件上，提高其优先注入权限
     * <p>
     * Qualifier：指定注入的bean
     */
    @Autowired
    @Qualifier("now")
    private Date birthday;

    /*
     * 注解无法注入复杂或集合类型
     */
}
